/**
 * 描述：
 *
 * @author madong47
 * @date 2020/10/30
 */
package com.ddd.domain.model.product;
//在一个完整的领域模型中，我们往往需要划分多个不同的 Bounded Context，但是不同的 BC 之间应该怎么交互呢？Eric Evans 的书中提供了集中不同的解决方案，
// 例如自定义 DSL，防腐层等。而在我们具体的项目中，我们更倾向于使用基于「领域事件」的交互方式，这样不仅不会破坏各个 BC
// 间的封装，也移除了各自间的耦合。producer 中是事件的发送方，handler 是具体处理事件的对象。
//exception 目录中定义了领域层相关的异常，即一般称之为的 BusinessException，代表违反某些业务逻辑的异常，例如账户余额不足等
//model 目录中定了领域对象，一般建议使用「充血模型」进行建模
//repository 中定义了领域对象对应的「仓库」
//service 则是定义了「领域服务」对象，如果认为 model 定义了业务模型，是名词，那么领域服务就是动词。